// 上下文内部维护了具体的策略的引用
// 回头客户端调用的时候，只需要调用上下文的方法即可
import { ITravelStrategy } from "./Interface";

export default class Context {
  // 维护具体的策略
  private strategy: ITravelStrategy;

  // 初始化策略
  constructor(st: ITravelStrategy) {
    this.strategy = st;
  }

  // 设置新的策略
  setStrategy(st: ITravelStrategy) {
    this.strategy = st;
  }

  goToAirport(distance: number): number {
    return this.strategy.calcFee(distance);
  }
}
